cssdimenstionvalue: Add common degree value singletons
authorTimm Bäder <mail@baedert.org>
Thu, 7 Nov 2019 06:31:04 +0000 (07:31 +0100)
committerTimm Bäder <mail@baedert.org>
Thu, 14 Nov 2019 08:15:58 +0000 (09:15 +0100)
gtk/gtkcssdimensionvalue.c

index 61a0e1926b86d9a37006bb348c0efabb3dec9ccf..d545b65e205c0afd6779df882ea1303249518603 100644 (file)
@@ -318,6 +318,12 @@ gtk_css_dimension_value_new (double     value,
     { &GTK_CSS_VALUE_DIMENSION.value_class, 1, GTK_CSS_S, 0 },
     { &GTK_CSS_VALUE_DIMENSION.value_class, 1, GTK_CSS_S, 1 },
   };
+  static GtkCssValue deg_singletons[] = {
+    { &GTK_CSS_VALUE_DIMENSION.value_class, 1, GTK_CSS_DEG, 0   },
+    { &GTK_CSS_VALUE_DIMENSION.value_class, 1, GTK_CSS_DEG, 90  },
+    { &GTK_CSS_VALUE_DIMENSION.value_class, 1, GTK_CSS_DEG, 180 },
+    { &GTK_CSS_VALUE_DIMENSION.value_class, 1, GTK_CSS_DEG, 270 },
+  };
   GtkCssValue *result;
 
   switch ((guint)unit)
@@ -365,6 +371,18 @@ gtk_css_dimension_value_new (double     value,
 
       break;
 
+    case GTK_CSS_DEG:
+      if (value == 0)
+        return _gtk_css_value_ref (&deg_singletons[0]);
+      if (value == 90)
+        return _gtk_css_value_ref (&deg_singletons[1]);
+      if (value == 180)
+        return _gtk_css_value_ref (&deg_singletons[2]);
+      if (value == 270)
+        return _gtk_css_value_ref (&deg_singletons[3]);
+
+      break;
+
     default:
       ;
     }